// 引入路由
import router from './router'
// 引入vuex
import store from './store'
// 引入消息提示
import { Message, Notification } from 'element-ui'
// 引入滚动条
import NProgress from 'nprogress'
// 导入滚动条样式
import 'nprogress/nprogress.css'
// toktn存储
// import { getToken } from '@/utils/auth'
// 默认关闭进度条
NProgress.configure({ showSpinner: false })
// 前置守卫

// 准备白名单数组
const whiteList = ['/login', '/404', '/dashboard', '/floorPt', '/lifecycle']
// 前置守卫
router.beforeEach(async (to, from, next) => {
  // 在准备跳转之前开启进度条
  NProgress.start()
  // 判断是否登录
  //   console.log('store.state.user.token', store.state.user.token)
  if (store.state.user.token) {
    // 有token，再判断去的是否为登录页
    if (to.path === '/login') {
      next('/')
      NProgress.done()
    } else {
      // 节约请求 不要每次切换页面都请求用户信息
      if (!store.getters.name) {
        await store.dispatch('user/getInfo')
      }
      // hack那些数据改变却没有被vue检测到的更新！
      next()
    }
  } else {
    // 没登录，判断去的是不是白名单
    if (whiteList.includes(to.path)) {
      // console.log(to.path);
      next()
    } else {
      // 不在就打回登录页
      // console.log(to.path);
      // next('/login')
      // 中断当前导航，执行新的导航
      // beforeEach(('/login',form,next)=>{
      //   // 不放行会一直执行下去
      //   next ()
      // })
      // console.log('打回登录页');
      next(`/login?redirect=${to.path}`)
      Message.success('请先登录')
      NProgress.done()
      next()
    }
  }
})
// 后置守卫
router.afterEach(() => {
  // finish progress bar
  NProgress.done()
})
